package ui

import (
	"image/color"
	"lnzw/server/test/test_fyne/test_3/data"
	"lnzw/server/test/test_fyne/test_3/data/unit"

	"fyne.io/fyne/v2"
	"fyne.io/fyne/v2/canvas"
)

const offsetM = 10

type MonsterUI struct {
	IUIBase
	Monster *unit.MonsterUnit
	Circle  *canvas.Circle
}

func NewMonsterUI(monster *unit.MonsterUnit, parentUI IUIBase) *MonsterUI {
	ui := &MonsterUI{
		Monster: monster,
		IUIBase: parentUI,
	}
	return ui
}

func (p *MonsterUI) Init() {
	p.draw()
}

func (p *MonsterUI) GetUnit() data.IUnit { return p.Monster }

func (p *MonsterUI) Update() {
	point := p.Monster.GetPosition()
	p.Circle.Position1 = fyne.NewPos(point.X+float32(offset_x)-offsetM, point.Y-offsetM+float32(offset_y))
	p.Circle.Position2 = fyne.NewPos(point.X+float32(offset_x)+offsetM, point.Y+offsetM+float32(offset_y))
	p.Circle.Refresh()
}

func (p *MonsterUI) Destroy() {
	p.GetContainer().Remove(p.Circle)
}

func (p *MonsterUI) draw() {
	circle := canvas.NewCircle(color.RGBA{R: 255, G: 0, B: 0, A: 255})
	point := p.Monster.GetPosition()
	circle.Position1 = fyne.NewPos(point.X+float32(offset_x)-offsetM, point.Y-offsetM+float32(offset_y))
	circle.Position2 = fyne.NewPos(point.X+float32(offset_x)+offsetM, point.Y+offsetM+float32(offset_y))
	p.Circle = circle
	p.GetContainer().Add(circle)
}
